package bbalgae;

import java.util.Scanner;

public class J14_Array {
	
	/*	배열(Array)
	 * 	지금까지 우리가 사용한 변수는 하나의 저장영역에 하나의 이름으로 하나의 값만을 저장
	 *	만일, 데이터 건수가 여러  개인 경우 변수를 변수를 여러 개 선언해서 사용해야 함.
	 * 	학생 한명의 성적처리 : 변수 7개사용 
	 * 	학생 10명의 성적처리: 변수 7*10개 사용	
	 * 	이렇게 하면 코드 작성해야 하는 코드도 많아지고 반복문 사용도 힘들어 진다.
	 * 	
	 * 	자바에서는 동일한 자료형의 객체나 기본자료형을 묶어(그룹화)서 배열로 사용할 수 있다.
	 * 	배열에 속하는 각 개체는 "배열의 구성요소" 라함
	 * 	배열에서 구성요소의 갯수를 알아내려면 length 필드를 이용 
	 * 	배열의 값을 저장하거나 읽으려면 각 구성요소의 index(위치)를 지정해야 함.
	 * 	배열의 index는 0부터 시작함. 
	 * 	배열은 일단 크기가 정해지면 변경 불가.
	 * 
	 * 	Iterating on Array
	 * 	JDK5 이전에서는 for문과 배열의 index를 이용해서 배열의 값을 출력했음.
	 *	JDK5 이상에서는 for문이 향상 되었음.
	 *	즉, 배열의 index없이 배열을 반복처리 가능
	 *	for(배열의 구성요소 자료형 : 배열명)
	 */
	
	
	public static void main(String[] args){
		
		//배열을 사용하지 않은 성적처리 프로그램
		
		int stno = 12345678;
		int kor1=90;
		int eng1=99;
		int mat1=98;

		int stno2 = 1234569;
		int kor2=80;
		int eng2=89;
		int mat2=88;
		
		int stno3 = 1234567;
		int kor3=70;
		int eng3=69;
		int mat3=78;
		
		int tot1 = kor1+eng1+mat1;
		int tot2 = kor2+eng2+mat2;
		int tot3 = kor3+eng3+mat3;
		
		// 배열을 사용한 성적표
		
		int[] arrstd = new int[3]; // 자료형이 같아야함
		int[] kor	= new int[3];
		int[] eng=new int[3];
		int[] mat=new int[3];
		int[] tot=new int[3];
		//배열의 구성요소에 값 저장 `
		arrstd[0] = 1234;
		arrstd[1] = 4567;
		arrstd[2] = 9101;
	
		System.out.println(arrstd[0]);
		System.out.println(arrstd[1]);
		System.out.println(arrstd[2]);
		System.out.println(arrstd);
		
		kor[0]=90; kor[1]=89; kor[2]=67;
		eng[0]=80; eng[1]=79; eng[2]=57;
		mat[0]=70; mat[1]=99; mat[2]=77;
		
		System.out.println(kor);
		System.out.println(kor[0]);
		System.out.println(kor[1]);
		System.out.println(kor[2]);
		System.out.println(eng);
		System.out.println(eng[0]);
		System.out.println(eng[1]);
		System.out.println(eng[2]);
		System.out.println(mat);
		System.out.println(mat[0]);
		System.out.println(mat[1]);
		System.out.println(mat[2]);
		
	/*	tot[0]=kor[0]+eng[0]+mat[0];
		tot[1]=kor[1]+eng[1]+mat[1];
		tot[2]=kor[2]+eng[2]+mat[2];*/
		
		for(int i=0; i<=2; i++)
			tot[i] = kor[i]+eng[i]+mat[i];
		System.out.println(tot);
		System.out.println(tot[0]);
		System.out.println(tot[1]);
		System.out.println(tot[2]);
	
	//	배열 선언 및 초기화 
		
		char[] grade={'수','우','미','양','가'};
		//grade[0] = '수';
		//grade[1] = '우';
		System.out.println(grade.length);
		for(int i=0; i<grade.length; i++ )
		System.out.println(grade[i]);
	
	// Iterating on Array
		
		for(char g :grade)
			System.out.println(g);
		
		/*int[] arrstd = new int[3]; // 자료형이 같아야함
		int[] kor	= new int[3];
		int[] eng=new int[3];
		int[] mat=new int[3];
		int[] tot=new int[3];
		 */
		
		for(int c : arrstd)
			System.out.println(c);
		for(int k : kor)
			System.out.println(k);
		for(int e : eng)
			System.out.println(eng);
		for(int m : mat)
			System.out.println(mat);
		for(int t : tot)
			System.out.println(tot);
		
		
		
	}

}
